#ifndef FILE_PROCESS_H
#define FILE_PROCESS_H

/*****************************************************************************************
  @Copyright  2020-2021
  @Date       2021-02-23
  @Author     qiaowei
  @Contact    weiweiqiao@126.com
  @Version    1.0
  @Brief      打开文件，读取数据
  @Other      被File_manager类调用
  @History    None
  @Functions  None
******************************************************************************************/

#include <QObject>
#include <QMap>

class Track_process;
//class Track_process_02;

class File_process : public QObject
{
    Q_OBJECT
public:
    explicit File_process(QObject *parent = nullptr);
    ~File_process();

signals:
    /***************************************************************************
     @date     2021-02-23
     @author   qiaowei
     @contact  weiweiqiao@126.com
     @version  1.0
     @brief    传递要拆分数据的文件名列表
     @param    files 文件名列表
    ***************************************************************************/
    void si_split_data_from_files(QStringList files);

    /***************************************************************************
     @date     2021-02-25
     @author   qiaowei
     @contact  weiweiqiao@126.com
     @version  1.0
     @brief    传递要读取数据的文件名列表
     @param    files 文件名列表
    ***************************************************************************/
    void si_read_data_from_file(QStringList files);

    /***************************************************************************
     @date     2021-02-25
     @author   qiaowei
     @contact  weiweiqiao@126.com
     @version  1.0
     @brief    传递保存航迹track数据的字典
     @param    data_map 字典，保存航迹数据
    ***************************************************************************/
    void si_send_data_to_model(QMap<QString, QString>* data_map);

    void si_fetch_filter_conditions(QMap<QString, QString> map);

private:
    void init_connections();

private slots:
    /***************************************************************************
     @date     2021-02-23
     @author   qiaowei
     @contact  weiweiqiao@126.com
     @version  1.0
     @brief    槽方法，根据接收到的文件名列表，将文件依次打开，处理其中数据，保存到
               不同文件中
     @param    file_list 文件名列表
    ***************************************************************************/
    void sl_split_data_from_files(QStringList file_list);

    /***************************************************************************
     @date     2021-02-25
     @author   qiaowei
     @contact  weiweiqiao@126.com
     @version  1.0
     @brief    根据文件名列表，依次打开文件，读取数据，以QString类型保存数据
     @param    file_list 文件名列表
    ***************************************************************************/
    void sl_read_data_from_file(QStringList file_list);

    void sl_fetch_filter_conditions(QMap<QString, QString> map);

private:
    Track_process* data_process_;

//    Track_process_02* data_process02_;

    /***************************************************************************
     @date     2021-02-24
     @author   qiaowei
     @contact  weiweiqiao@126.com
     @version  1.0
     @brief    线程标志位，true 线程在处理数据，false 线程处理完数据
    ***************************************************************************/
    bool thread_flag_;
};

#endif // FILE_PROCESS_H
